home *** CD-ROM | disk | FTP | other *** search
/ Nebula 2 / Nebula Two.iso / SourceCode / AlexNeXTSTEPSource / Source / Chapter6_Events / ControlDemo / Control_3.m < prev    next >
Text File  |  1995-06-12  |  2KB  |  81 lines

  1. #import <appkit/appkit.h>
  2.  
  3. // a minimal program to demonstrate how
  4. // to add controls to a window
  5.  
  6. main()
  7. {
  8.     // create an application object
  9.     // to establish connection to
  10.     // Window Server
  11.     id NXApp = [Application new];
  12.     id theWindow;
  13.     id theMenu;
  14.     id theButton;
  15.     id theSlider;
  16.     id theTextField;
  17.     NXRect theRect;
  18.  
  19.     // create a window that's at 125, 125
  20.     // and is 200 by 300 pixels
  21.     NXSetRect(&theRect, 125, 125, 200, 300);
  22.     theWindow = [ [Window alloc]
  23.         initContent:&theRect
  24.         style: NX_TITLEDSTYLE
  25.         backing:NX_BUFFERED
  26.         buttonMask:NX_MINIATURIZEBUTTONMASK
  27.         defer:YES];
  28.  
  29.     // create the menu
  30.     theMenu = [ [Menu alloc]
  31.         initTitle: [NXApp appName] ];
  32.     // create the menu option
  33.     [theMenu addItem:"Quit"
  34.         action:@selector(terminate:)
  35.         keyEquivalent:'q'];
  36.  
  37.     // resize menu to accomodate menu option
  38.     [theMenu sizeToFit];
  39.     [NXApp setMainMenu:theMenu];
  40.  
  41.     // create a button that's 80 by 20
  42.     NXSetRect(&theRect, 0, 0, 80, 20);
  43.     theButton = [ [Button alloc]
  44.         initFrame:&theRect];
  45.     // set the title for the button
  46.     [theButton setTitle:"Press Here"];
  47.     // since the button is a view, we need
  48.     // to install it as the subview of the
  49.     // window's contentview or else it
  50.     // won't draw
  51.     [ [theWindow contentView]
  52.         addSubview: theButton];
  53.  
  54.     // create a horizontal slider 100 x 15
  55.     NXSetRect(&theRect, 0, 100, 100, 15);
  56.     theSlider = [ [Slider alloc]
  57.         initFrame:&theRect];
  58.     // set the min value to 0.0
  59.     [theSlider setMinValue:0.0];
  60.     // set the max value to 10.0
  61.     [theSlider setMaxValue:10.0];
  62.     [ [theWindow contentView]
  63.         addSubview:theSlider];
  64.  
  65.     // create a textfield that's 75 by 20
  66.     NXSetRect(&theRect, 0, 150, 75, 20);
  67.     theTextField = [ [TextField alloc]
  68.         initFrame:&theRect];
  69.     // make the text editable
  70.     [theTextField setEditable:YES];
  71.     [ [theWindow contentView]
  72.         addSubview:theTextField];
  73.  
  74.     // send the window to the front
  75.     // and display it
  76.     [theWindow makeKeyAndOrderFront:nil];
  77.  
  78.     // go into event loop to wait for events
  79.     [NXApp run];
  80. }
  81.